package lc.q151_200;

import java.util.Arrays;

/**
 * 给你两个 版本号字符串 version1 和 version2 ，请你比较它们。版本号由被点 '.' 分开的修订号组成。修订号的值 是它 转换为整数 并忽略前导零。
 *
 * 比较版本号时，请按 从左到右的顺序 依次比较它们的修订号。如果其中一个版本字符串的修订号较少，则将缺失的修订号视为 0。
 *
 * 返回规则如下：
 *
 * 如果 version1 < version2 返回 -1，
 * 如果 version1 > version2 返回 1，
 * 除此之外返回 0。
 */
public class Q165 {

    public int compareVersion(String version1, String version2) {
        // 首先两个都需要用.隔开，如果长度一样直接笔记，不一样，小的那个补0
        // 方法一：字符串分割
//        String[] v1 = version1.split("\\.");
//        String[] v2 = version2.split("\\.");
//        // 每个修订版号比较
//        for (int i = 0; i < Math.max(v1.length, v2.length); i++) {
//            int _v1 = (i < v1.length) ? Integer.parseInt(v1[i]) : 0;
//            int _v2 = (i < v2.length) ? Integer.parseInt(v2[i]) : 0;
//            if (_v1 != _v2) {
//                return _v1 > _v2 ? 1: -1;
//            }
//        }
        // 方法二，指针法，就是两个指针同时向右走，得出每个版本的指针
        int n = version1.length();
        int m = version2.length();
        int i = 0, j = 0;
        while (i < n || j < m) {
            int x = 0;
            // 向右移动i
            while (i < n && version1.charAt(i) != '.') {
                x = x * 10 + (version1.charAt(i) - '0');
                i ++;
            }
            // 向右移动j
            int y = 0;
            while (j < m && version2.charAt(j) != '.') {
                y = y * 10 + (version2.charAt(j) - '0');
                j ++;
            }
            if (x < y) {
                return -1;
            }
            if (x > y) {
                return 1;
            }
            i ++;
            j ++;
        }
        return 0;
    }

    public static void main(String[] args) {
        System.out.println(new Q165().compareVersion("1.2", "1.10"));
        System.out.println(new Q165().compareVersion("1.01", "1.001"));
        System.out.println(new Q165().compareVersion("1.0", "1.0.0.0"));
    }
}
